﻿using System;
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace GEA
{
    public partial class mdiMain : Form
    {
        public string accao = "";
        Boolean du_ent = true;
        clDatabase dal = new clDatabase();

        public mdiMain()
        {
            InitializeComponent();

            //tsEntreposto.Enabled = false;
            //tsProcesso.Enabled = false;
            //tsDU.Enabled = false;
            tsbImprimir.Visible = true;


            tslEnt.Visible = false;
            tslProcesso.Visible = false;
            tslDUs.Visible = false;

            tsbNovo.Visible = false;
            tsbAlterar.Visible = false;
            tsbSalvar.Visible = false;
            tsDUver.Visible = false;
            
            tsbCancelar.Visible = false;
            tsbApagar.Visible = false;


            

        }

        frmEntreposto jEntreposto = new frmEntreposto();
        frmProcesso jProcesso = new frmProcesso();
        frmDUs jDUs = new frmDUs();
        public frmReports jReports;
        

        private void mdiMain_Load(object sender, EventArgs e)
        {

            MdiClient ctlMDI;

            
            foreach (Control ctl in this.Controls)
            {
               
                try
                {

                    ctlMDI = (MdiClient)ctl;
                    ctlMDI.BackColor = System.Drawing.Color.White;
                }
                catch (InvalidCastException ex)
                {
                    // Catch and ignore the error if casting failed.
                    //MessageBox.Show(ex.ToString());
                    string exx = ex.ToString();
                }
            }            
            this.Text = "G.E.A. - Gestão de Entreposto Aduaneiro (v" + System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.ToString() + ")";
            frmLogin jLogin = new frmLogin();
            jLogin.ShowDialog(this.MdiParent);
            startup_ent();
        }

        private void mdiMain_MdiChildActivate(object sender, EventArgs e)
        {

           
            if (ActiveMdiChild != null)
            {


                tsbNovo.Visible = true;
                tsbAlterar.Visible = true;
                tsbSalvar.Visible = true;
                tsbSalvar.Enabled = false;

                tsbImprimir.Visible = true;
                tsbImprimir.Enabled = true;

                tsbCancelar.Visible = true;
                tsbCancelar.Enabled = false;
                tsbApagar.Visible = true;

                tsDUver.Visible = false;


                tsReport1.Visible = false;
                tsReport2.Visible = false;
                tsReport3.Visible = false;
                tsReport4.Visible = false;

                //MessageBox.Show(ActiveMdiChild.Name.ToString());

                switch (ActiveMdiChild.Name)
                {

                    case "frmEntreposto":
                        tsEntreposto.BackColor = System.Drawing.Color.Green;
                        tsProcesso.Enabled = false;
                        tsProcesso.BackColor = System.Drawing.Color.Empty;
                        tsDU.Enabled = false;
                        tsDU.BackColor = System.Drawing.Color.Empty;
                        tsbImprimir.Enabled = false;
                        tsbImprimir.BackColor = System.Drawing.Color.Empty;

 
                        tslEnt.Visible = true;
                        tslProcesso.Visible = false;
                        tslDUs.Visible = false;
                        tslReports.Visible = false;

                        



                        break;
                    case "frmProcesso":
                        tsEntreposto.BackColor = System.Drawing.Color.Empty;
                        tsProcesso.Enabled = true;
                        tsProcesso.BackColor = System.Drawing.Color.Green;
                        tsDU.Enabled = false;
                        tsDU.BackColor = System.Drawing.Color.Empty;
                        tsbImprimir.Enabled = true;
                        tsbImprimir.BackColor = System.Drawing.Color.Empty;

                        tslEnt.Visible = false;
                        tslProcesso.Visible = true;
                        tslDUs.Visible = false;
                        tslReports.Visible = false;

                        tsDUver.Visible = true;
                        break;
                    case "frmDUs":
                        tsEntreposto.BackColor = System.Drawing.Color.Empty;
                        tsProcesso.BackColor = System.Drawing.Color.Empty;
                        tsDU.Enabled = true;
                        tsDU.BackColor = System.Drawing.Color.Green;
                        tsbImprimir.Enabled = true;
                        tsbImprimir.BackColor = System.Drawing.Color.Empty;

                        tslEnt.Visible = false;
                        tslProcesso.Visible = false;
                        tslDUs.Visible = true;
                        tslReports.Visible = false;
                        break;
                    case "frmrptSaldoReferencia":
                        tslEnt.Visible = false;
                        tslProcesso.Visible = false;
                        tslDUs.Visible = false;
                        tslReports.Visible = true;

                        tsDUver.Visible = false;
                        tsbNovo.Visible = false;
                        tsbAlterar.Visible = false;
                        tsbSalvar.Visible = false;
                        tsbCancelar.Visible = false;
                        tsbApagar.Visible = false;

                        tsReport1.Visible = true;
                        tsReport2.Visible = true;
                        tsReport3.Visible = true;
                        tsReport4.Visible = true;
                        break;
                    
                    case "frmrptStocks":
                        tslEnt.Visible = false;
                        tslProcesso.Visible = false;
                        tslDUs.Visible = false;
                        tslReports.Visible = true;

                        tsDUver.Visible = false;
                        tsbNovo.Visible = false;
                        tsbAlterar.Visible = false;
                        tsbSalvar.Visible = false;
                        tsbCancelar.Visible = false;
                        tsbApagar.Visible = false;

                        tsReport1.Visible = true;
                        tsReport2.Visible = true;
                        tsReport3.Visible = true;
                        tsReport4.Visible = true;

                        break;
                    case "frmrptProcessoMovimentos":
                        tslEnt.Visible = false;
                        tslProcesso.Visible = false;
                        tslDUs.Visible = false;
                        tslReports.Visible = true;

                        tsDUver.Visible = false;
                        tsbNovo.Visible = false;
                        tsbAlterar.Visible = false;
                        tsbSalvar.Visible = false;
                        tsbCancelar.Visible = false;
                        tsbApagar.Visible = false;

                        tsReport1.Visible = true;
                        tsReport2.Visible = true;
                        tsReport3.Visible = true;
                        tsReport4.Visible = true;

                        break;

                    case "frmrptMovimentoProcesso":
                        tslEnt.Visible = false;
                        tslProcesso.Visible = false;
                        tslDUs.Visible = false;
                        tslReports.Visible = true;

                        tsDUver.Visible = false;
                        tsbNovo.Visible = false;
                        tsbAlterar.Visible = false;
                        tsbSalvar.Visible = false;
                        tsbCancelar.Visible = false;
                        tsbApagar.Visible = false;

                        tsReport1.Visible = true;
                        tsReport2.Visible = true;
                        tsReport3.Visible = true;
                        tsReport4.Visible = true;

                        break;
                    case "frmReports":

                         tsEntreposto.BackColor = System.Drawing.Color.Empty;
                        tsProcesso.Enabled = true;
                        tsProcesso.BackColor = System.Drawing.Color.Empty;
                        tsDU.Enabled = false;
                        tsDU.BackColor = System.Drawing.Color.Empty;
                        tsbImprimir.Enabled = true;
                        tsbImprimir.BackColor = System.Drawing.Color.Green;

                        tslEnt.Visible = false;
                        tslProcesso.Visible = false;
                        tslDUs.Visible = false;
                        tslReports.Visible = true;

                        tsDUver.Visible = false;
                        tsbNovo.Visible = false;
                        tsbAlterar.Visible = false;
                        tsbSalvar.Visible = false;
                        tsbCancelar.Visible = false;
                        tsbApagar.Visible = false;

                        tsReport1.Visible = true;
                        tsReport2.Visible = true;
                        tsReport3.Visible = true;
                        tsReport4.Visible = true;
                        break;
                    default:

                        break;
                }
            }
        }

        private void startup_ent()
        {
            jEntreposto.MdiParent = this;
            jEntreposto.Dock = DockStyle.Fill;
            jEntreposto.Show();
        }

        public void startup_processo(Entreposto ent)
        {

            jProcesso = new frmProcesso(ent);
            jProcesso.MdiParent = this;
            jProcesso.Dock = DockStyle.Fill;
            jProcesso.Show();

        }

        public void startup_dus(Processo proc, string accao)
        {

            jDUs = new frmDUs(proc, accao);
            jDUs.MdiParent = this;
            jDUs.Dock = DockStyle.Fill;
            jDUs.Show();


        }
    
        private void tsSair_Click(object sender, EventArgs e)
        {
            Application.Exit();
        }

        private void tsEntreposto_Click(object sender, EventArgs e)
        {
            jEntreposto.frmEntreposto_ReLoad();
            jEntreposto.Activate();
        }

        private void tsProcesso_Click(object sender, EventArgs e)
        {

            tsReport1.Enabled = true;
            tsReport2.Enabled = true;
            tsReport3.Enabled = true;
            tsReport4.Enabled = true;
            jProcesso.Activate();
            jProcesso.Load_Processos();

            
        }

        private void tsDU_Click(object sender, EventArgs e)
        {
            jDUs.Activate();
        }

        private void tsbImprimir_Click(object sender, EventArgs e)
        {
            if (jReports == null)
            {
                jReports = new frmReports(GlobalVar.GlobalEntreposto.ToString());
                jReports.MdiParent = this;
                jReports.Dock = DockStyle.Fill;
                jReports.Show();
            }
            else
            {
                tsReport1.Enabled = true;
                tsReport2.Enabled = true;
                tsReport3.Enabled = true;
                tsReport4.Enabled = true;
                jReports.Activate();
                jReports.Load_DGV(GlobalVar.GlobalEntreposto,"");
                
            }

        }

        private void tsbNovo_Click(object sender, EventArgs e)
        {
            
            accao = "novo";
            if (ActiveMdiChild.Name == "frmEntreposto")
            {
                jEntreposto.pnlEntrepostos.Enabled = false;

                jEntreposto.dgvEntrepostos.Visible = false;
                jEntreposto.groupBox1.Visible = true;
                jEntreposto.tbEntreposto.Text = "";
                jEntreposto.tbEntreposto.Enabled = true;
                jEntreposto.tbEntreposto.Focus();
                jEntreposto.tbNomeFirma.Text = "";
                jEntreposto.tbTipo.Text = "";
                jEntreposto.groupBox1.Text = "Novo Entreposto";
            }
            else
            {
                if (ActiveMdiChild.Name == "frmProcesso")
                {
                    
                    Processo proc = new Processo();

                    startup_dus(proc, "novo");
                    du_ent = true;

                }
                else
                {
                    if (ActiveMdiChild.Name == "frmDUs")
                    {                        

                        jDUs.gbProcesso.Visible = true;
                        jDUs.gbDU.Visible = true;
                        jDUs.dgvDUs.Visible = false;
                        jDUs.dgvMovimentos.Visible = false;
                        jDUs.dgvAddMovimentos.Visible = true;
                        jDUs.dgvAddMovimentos.Columns.Clear();

                        jDUs.tbIdDU.Text = "";
                        jDUs.tbAlfandega.Text = "";
                        jDUs.tbRegime.Text = "";
                        
                        if (dal.DU_Get_Tipo(jDUs.Proc.Id_entreposto, jDUs.Proc.Id_processo))
                        {
                            du_ent = false;
                            jDUs.dgvAddMovimentos.DataSource = dal.Mercadorias_Get_Lista_Stock_dt(jDUs.Proc.Id_entreposto, jDUs.Proc.Id_processo);
                            jDUs.dgvAddMovimentos.Columns[0].ReadOnly = true;
                            jDUs.dgvAddMovimentos.Columns[0].DefaultCellStyle.BackColor = Color.LightGray;
                            jDUs.dgvAddMovimentos.Columns[1].ReadOnly = true;
                            jDUs.dgvAddMovimentos.Columns[1].DefaultCellStyle.BackColor = Color.LightGray;
                            jDUs.dgvAddMovimentos.Columns[3].Visible = false;
                            jDUs.dgvAddMovimentos.Columns[4].Visible = false;
                            jDUs.dgvAddMovimentos.Columns[5].Visible = false;
                            jDUs.dgvAddMovimentos.AllowUserToAddRows = false;
                            jDUs.dgvAddMovimentos.Columns[0].HeaderText = "REFERÊNCIA".ToUpper();
                            jDUs.dgvAddMovimentos.Columns[2].HeaderText = "QTD. A MOVIMENTAR".ToUpper();
                            jDUs.dgvAddMovimentos.Columns[1].HeaderText = "SALDO".ToUpper();
                            jDUs.dgvAddMovimentos.ColumnHeadersDefaultCellStyle.Font = new Font(DataGridView.DefaultFont, FontStyle.Bold);
                            jDUs.dgvAddMovimentos.CurrentCell = this.jDUs.dgvAddMovimentos[2, 0];
                        }
                        else
                        {
                            du_ent = true;
                            jDUs.dgvAddMovimentos.ColumnCount = 5;
                            //jDUs.dgvAddMovimentos.Columns[0].Name = "Referência";
                            //jDUs.dgvAddMovimentos.Columns[1].Name = "Quantidade";
                            //jDUs.dgvAddMovimentos.Columns[2].Name = "Valor";
                            //jDUs.dgvAddMovimentos.Columns[3].Name = "Peso Bruto";
                            //jDUs.dgvAddMovimentos.Columns[4].Name = "Peso Liquido";
                            jDUs.dgvAddMovimentos.Columns[0].HeaderText = "REFERÊNCIA".ToUpper();
                            jDUs.dgvAddMovimentos.Columns[1].HeaderText = "QUANTIDADE".ToUpper();
                            jDUs.dgvAddMovimentos.Columns[2].HeaderText = "VALOR".ToUpper();
                            jDUs.dgvAddMovimentos.Columns[3].HeaderText = "PESO BRUTO".ToUpper();
                            jDUs.dgvAddMovimentos.Columns[4].HeaderText = "PESO LIQUIDO".ToUpper();
                        }
                        jDUs.tbIdDU.Focus();

                        //jDUs.dgvAddMovimentos.AlternatingRowsDefaultCellStyle.BackColor = Color.LightCyan;
                        //jDUs.dgvAddMovimentos.ColumnHeadersDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
                        //jDUs.dgvAddMovimentos.ColumnHeadersDefaultCellStyle.Font = new Font(DataGridView.DefaultFont, FontStyle.Bold);
                        ////jDUs.dgvAddMovimentos.Columns[0].HeaderCell.Style.Font = new Font("Arial", 14F, FontStyle.Bold, GraphicsUnit.Pixel);
                    }
                }
            }

            tsDUver.Enabled = false;
            tsbNovo.Enabled = false;
            tsbAlterar.Enabled = false;
            tsbSalvar.Enabled = true;
            tsbCancelar.Enabled = true;
            tsbApagar.Enabled = false;
            //tsbImprimir.Enabled = false;

        }

        private void tsbEditar_Click(object sender, EventArgs e)
        {
            
            accao = "editar";
            Boolean editar = true;
            if (ActiveMdiChild.Name == "frmEntreposto")
            {
                jEntreposto.dgvEntrepostos.Visible = false;
                jEntreposto.groupBox1.Visible = true;
                jEntreposto.groupBox1.Text = "Editar Entreposto";

                DataGridViewCell cell = null;
                foreach (DataGridViewCell selectedCell in jEntreposto.dgvEntrepostos.SelectedCells)
                {
                    cell = selectedCell;
                    break;
                }
                if (cell != null)
                {
                    DataGridViewRow row = cell.OwningRow;
                    jEntreposto.tbEntreposto.Text = row.Cells["id_entreposto"].Value.ToString();
                    jEntreposto.tbEntreposto.Enabled = false;
                    jEntreposto.tbNomeFirma.Text = row.Cells["nome_firma"].Value.ToString();
                    jEntreposto.tbNomeFirma.Focus();
                    jEntreposto.tbTipo.Text = row.Cells["tipo"].Value.ToString();        
                             
                }
                
            }
            else
            {
                if (ActiveMdiChild.Name == "frmProcesso")
                {
                    DataGridViewCell cell = null;
                    foreach (DataGridViewCell selectedCell in jProcesso.dgvProcessos.SelectedCells)
                    {
                        cell = selectedCell;
                        break;
                    }
                    if (cell != null)
                    {
                        DataGridViewRow row = cell.OwningRow;

                        jProcesso.lStocks.Visible = false;

                        jProcesso.lPesqRef.Visible = false;
                        jProcesso.tbPesqRef.Visible = false;
                        jProcesso.dgvStocks.Visible = false;
                        jProcesso.groupBox1.Visible = true;
                        jProcesso.groupBox1.Text = row.Cells["id_entreposto"].Value.ToString();
                        jProcesso.tbProcesso.Text = row.Cells["id_processo"].Value.ToString();
                        jProcesso.tbProcesso.Enabled = false;
                        jProcesso.dtpProcesso.Value = DateTime.Parse(row.Cells["data_processo"].Value.ToString());
                        jProcesso.tbFornecedor.Text = row.Cells["fornecedor"].Value.ToString();
                        jProcesso.tbFactura.Text = row.Cells["id_factura"].Value.ToString(); ;
                        jProcesso.tbContraMarca.Text = row.Cells["contra_marca"].Value.ToString();
                        jProcesso.dtpContraMarca.Value = DateTime.Parse(row.Cells["data_contra_marca"].Value.ToString());
                    }
                }
                else
                {
                    if (ActiveMdiChild.Name == "frmDUs")
                    { 



                        DataGridViewCell cell = null;
                        foreach (DataGridViewCell selectedCell in jDUs.dgvDUs.SelectedCells)
                        {
                            cell = selectedCell;
                            break;
                        }
                        if (cell != null)
                        {

                            

                            DataGridViewRow row = cell.OwningRow;
                            jDUs.tbIdDU.Text = row.Cells["id_du"].Value.ToString();
                            jDUs.dtpData.Value = DateTime.Parse(row.Cells["data_du"].Value.ToString());
                            jDUs.tbAlfandega.Text = row.Cells["alfandega"].Value.ToString();
                            jDUs.tbRegime.Text = row.Cells["regime"].Value.ToString();

                            if (dal.DU_Is_Last_Id(jDUs.Proc.Id_entreposto, jDUs.Proc.Id_processo, row.Cells["id_du"].Value.ToString()))
                            {

                                jDUs.gbProcesso.Visible = true;
                                jDUs.gbDU.Visible = true;
                                jDUs.dgvDUs.Visible = false;
                                jDUs.dgvMovimentos.Visible = false;
                                jDUs.dgvAddMovimentos.Visible = true;
                                jDUs.dgvAddMovimentos.Columns.Clear();

                                du_ent = Boolean.Parse(row.Cells["du_entrada"].Value.ToString());

                                if (du_ent)
                                {
                                    jDUs.dgvAddMovimentos.DataSource = dal.Mercadorias_Get_Lista_dt(jDUs.Proc.Id_entreposto, jDUs.Proc.Id_processo, row.Cells["id_du"].Value.ToString());
                                    jDUs.dgvAddMovimentos.Columns["id_user"].Visible = false;
                                    jDUs.dgvAddMovimentos.Columns["data_criacao"].Visible = false;
                                    jDUs.dgvAddMovimentos.Columns["data_alteracao"].Visible = false;
                                    jDUs.dgvAddMovimentos.Columns["id_entreposto"].Visible = false;
                                    jDUs.dgvAddMovimentos.Columns["id_processo"].Visible = false;
                                    jDUs.dgvAddMovimentos.Columns["id_du"].Visible = false;

                                }
                                else
                                {
                                    jDUs.dgvAddMovimentos.DataSource = dal.Mercadorias_Get_Lista_Stock_dt(jDUs.Proc.Id_entreposto, jDUs.Proc.Id_processo, row.Cells["id_du"].Value.ToString());
                                    jDUs.dgvAddMovimentos.Columns[0].ReadOnly = true;
                                    jDUs.dgvAddMovimentos.Columns[0].DefaultCellStyle.BackColor = Color.LightGray;
                                    jDUs.dgvAddMovimentos.Columns[1].ReadOnly = true;
                                    jDUs.dgvAddMovimentos.Columns[1].DefaultCellStyle.BackColor = Color.LightGray;
                                    jDUs.dgvAddMovimentos.Columns[3].Visible = false;
                                    jDUs.dgvAddMovimentos.Columns[4].Visible = false;
                                    jDUs.dgvAddMovimentos.Columns[5].Visible = false;
                                    jDUs.dgvAddMovimentos.Columns[6].Visible = false;
                                    jDUs.dgvAddMovimentos.AllowUserToAddRows = false;
                                    jDUs.dgvAddMovimentos.Columns[0].HeaderText = "REFERÊNCIA".ToUpper();
                                    jDUs.dgvAddMovimentos.Columns[2].HeaderText = "QTD. A MOVIMENTAR".ToUpper();
                                    jDUs.dgvAddMovimentos.Columns[1].HeaderText = "SALDO".ToUpper();
                                    jDUs.dgvAddMovimentos.ColumnHeadersDefaultCellStyle.Font = new Font(DataGridView.DefaultFont, FontStyle.Bold);
                                    jDUs.dgvAddMovimentos.CurrentCell = this.jDUs.dgvAddMovimentos[2, 0];
                                }
                            }
                            else
                            {
                                editar = false;
                                MessageBox.Show("Não pode alterar o DU selecionado!", "ALERTA", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                            }
                            
                        }
                    }
                }
            }

            if (editar)
            {
                tsDUver.Enabled = false;
                tsbNovo.Enabled = false;
                tsbAlterar.Enabled = false;
                tsbSalvar.Enabled = true;
                tsbCancelar.Enabled = true;
                tsbApagar.Enabled = false;
            }
        }

        private void tsbSalvar_Click(object sender, EventArgs e)
        {
            Boolean du_existe = false;
            Boolean processo_existe = false;
            Boolean salvar_processo = false;
            Boolean salvar_du = false;
            Boolean salvar_mercadoria = false;

            Boolean salvar = true;

            if (ActiveMdiChild.Name == "frmEntreposto")
            {
                Entreposto Obj_Entreposto = new Entreposto();

                if(accao == "novo")
                {
                    if (!dal.Entreposto_Existe(jEntreposto.tbEntreposto.Text) && !string.IsNullOrEmpty(jEntreposto.tbEntreposto.Text))
                    {
                        Obj_Entreposto.Id_user = int.Parse(GlobalVar.GlobalValue.ToString());
                        Obj_Entreposto.Data_criacao = DateTime.Now;
                        Obj_Entreposto.Data_alteracao = DateTime.Now;
                        Obj_Entreposto.Id_entreposto = jEntreposto.tbEntreposto.Text;
                        Obj_Entreposto.Nome_firma = jEntreposto.tbNomeFirma.Text;
                        Obj_Entreposto.Tipo = jEntreposto.tbTipo.Text;
                        Obj_Entreposto.Guid = Guid.NewGuid();

                        dal.Entreposto_Save(Obj_Entreposto, accao);
                        accao = "";


                        jEntreposto.dgvEntrepostos.Visible = true;
                        jEntreposto.groupBox1.Visible = false;


                        jEntreposto.pnlEntrepostos.Controls.Clear();
                        jEntreposto.frmEntreposto_ReLoad();
                        jEntreposto.pnlEntrepostos.Enabled = true;
                    }
                    else
                    {
                        MessageBox.Show("O ID do Entreposto já existe ou é nulo!", "ALERTA", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                        salvar = false;
                    }

                }
                else                
                {
                    if (accao == "editar")
                    {                       


                        DataGridViewCell cell = null;
                        foreach (DataGridViewCell selectedCell in jEntreposto.dgvEntrepostos.SelectedCells)
                        {
                            cell = selectedCell;
                            break;
                        }
                        if (cell != null)
                        {
                            DataGridViewRow row = cell.OwningRow;

                            Obj_Entreposto.Id_user = int.Parse(GlobalVar.GlobalValue.ToString());
                            Obj_Entreposto.Data_criacao = DateTime.Parse(row.Cells["data_criacao"].Value.ToString());
                            Obj_Entreposto.Data_alteracao = DateTime.Now;
                            Obj_Entreposto.Id_entreposto = jEntreposto.tbEntreposto.Text;
                            Obj_Entreposto.Nome_firma = jEntreposto.tbNomeFirma.Text;
                            Obj_Entreposto.Tipo = jEntreposto.tbTipo.Text;
                            Obj_Entreposto.Guid = Guid.Parse(row.Cells["guid"].Value.ToString());
                        }


                        

                        dal.Entreposto_Save(Obj_Entreposto, accao);
                        accao = "";


                        jEntreposto.dgvEntrepostos.Visible = true;
                        jEntreposto.groupBox1.Visible = false;

                        jEntreposto.pnlEntrepostos.Controls.Clear();
                        jEntreposto.frmEntreposto_ReLoad();
                    }
                }
                
            }
            else
            {
                if (ActiveMdiChild.Name == "frmProcesso")
                {
                    Processo Obj_Processo = new Processo();

                    //DateTime data = DateTime.Now;
                    //if (dal.Processo_Existe(GlobalVar.GlobalEntreposto, jProcesso.tbProcesso.Text))
                    //{

                    DataGridViewCell cell = null;
                        foreach (DataGridViewCell selectedCell in jProcesso.dgvProcessos.SelectedCells)
                        {
                            cell = selectedCell;
                            break;
                        }
                        if (cell != null)
                        {
                            DataGridViewRow row = cell.OwningRow;
                            Obj_Processo.Id_user = int.Parse(GlobalVar.GlobalValue.ToString());
                            Obj_Processo.Data_criacao = DateTime.Now;
                            Obj_Processo.Data_alteracao = DateTime.Now;
                            Obj_Processo.Id_entreposto = jProcesso.Ent.Id_entreposto;
                            Obj_Processo.Id_processo = jProcesso.tbProcesso.Text;
                            Obj_Processo.Data_processo = jProcesso.dtpProcesso.Value;
                            Obj_Processo.Fornecedor = jProcesso.tbFornecedor.Text;
                            Obj_Processo.Id_factura = jProcesso.tbFactura.Text;
                            Obj_Processo.Contra_marca = jProcesso.tbContraMarca.Text;
                            Obj_Processo.Data_Contra_marca = jProcesso.dtpContraMarca.Value;
                            Obj_Processo.Guid = Guid.Parse(row.Cells["guid"].Value.ToString());

                            dal.Processo_Save(Obj_Processo,accao);
                            accao = "";

                            jProcesso.groupBox1.Visible = false;
                            jProcesso.dgvStocks.Visible = true;
                            jProcesso.lStocks.Visible = true;

                            jProcesso.Load_Processos();
                        }
                    //}
                    //else
                    //{
                    //    MessageBox.Show("O ID do Entreposto já existe!", "ALERTA", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                    //}
                }
                else
                {
                    if (ActiveMdiChild.Name == "frmDUs")
                    {

                        Processo Obj_Processo = new Processo();
                        DU Obj_DU = new DU();
                        Mercadoria Obj_Mercadoria = new Mercadoria();


                        Obj_DU.Id_user = int.Parse(GlobalVar.GlobalValue.ToString());
                        Obj_DU.Data_criacao = DateTime.Now;
                        Obj_DU.Data_alteracao = DateTime.Now;
                        Obj_DU.Id_entreposto = jProcesso.Ent.Id_entreposto;
                        Obj_DU.Id_processo = jDUs.tbProcesso.Text;
                        Obj_DU.Id_DU = jDUs.tbIdDU.Text;
                        Obj_DU.Data_DU = jDUs.dtpData.Value;
                        Obj_DU.Alfandega = jDUs.tbAlfandega.Text;
                        Obj_DU.Regime = jDUs.tbRegime.Text;
                        Obj_DU.DU_Entrada = du_ent;

                        Obj_Processo.Id_user = int.Parse(GlobalVar.GlobalValue.ToString());
                        Obj_Processo.Data_criacao = DateTime.Now;
                        Obj_Processo.Data_alteracao = DateTime.Now;
                        Obj_Processo.Id_entreposto = jProcesso.Ent.Id_entreposto;
                        Obj_Processo.Id_processo = jDUs.tbProcesso.Text;
                        Obj_Processo.Data_processo = jDUs.dtpProcesso.Value;
                        Obj_Processo.Fornecedor = jDUs.tbFornecedor.Text;
                        Obj_Processo.Id_factura = jDUs.tbFactura.Text;
                        Obj_Processo.Contra_marca = jDUs.tbContraMarca.Text;
                        Obj_Processo.Data_Contra_marca = jDUs.dtpContraMarca.Value;


                        if (accao == "novo")
                        {

                            if (jDUs.tbProcesso.CanFocus)
                            {
                                if (!dal.Processo_Existe(GlobalVar.GlobalEntreposto, Obj_Processo.Id_processo))
                                {
                                    dal.Processo_Save(Obj_Processo, accao);
                                    salvar_processo = true;
                                    jDUs.gbProcesso.Enabled = false;
                                }
                                else
                                {
                                    MessageBox.Show("O número do Processo já existe!", "ALERTA", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                                    salvar_processo = false;
                                }
                            }
                            

                            if (dal.DU_Existe(GlobalVar.GlobalEntreposto, Obj_DU.Id_processo, Obj_DU.Id_DU) || string.IsNullOrEmpty(Obj_DU.Id_DU))
                            {
                                MessageBox.Show("O número do DU já existe ou é nulo!", "ALERTA", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                                salvar_du = false;
                            }
                            else
                            {
                                salvar_du = true;
                            }
                        }
                        else
                        {
                            if (accao == "editar")
                            {
                                string id_du_new = jDUs.tbIdDU.Text; ;
                                string id_du_old = jDUs.dgvAddMovimentos.Rows[0].Cells["id_du"].Value.ToString();


                                if (id_du_new != id_du_old)
                                {
                                    if (!dal.DU_Existe(GlobalVar.GlobalEntreposto, Obj_DU.Id_processo, Obj_DU.Id_DU))
                                    {
                                        Obj_DU.Id_DU = id_du_old;
                                        Obj_DU.Data_criacao = DateTime.Parse(jDUs.dgvDUs.Rows[0].Cells["data_criacao"].Value.ToString());

                                        Obj_DU.Guid = Guid.Parse(jDUs.dgvDUs.Rows[0].Cells["guid"].Value.ToString());

                                        dal.DU_Save(Obj_DU, "remover");
                                        
                                        Obj_Mercadoria.Id_entreposto = jProcesso.Ent.Id_entreposto; ;
                                        Obj_Mercadoria.Id_processo = jDUs.tbProcesso.Text;
                                        Obj_Mercadoria.Id_DU = id_du_old;
                                        //Obj_Mercadoria.Data_criacao = DateTime.Parse(jDUs.dgvAddMovimentos.Rows[0].Cells["data_criacao"].Value.ToString());
                                        Obj_Mercadoria.Data_alteracao = DateTime.Now;
                                        Obj_Mercadoria.Id_Referencia = "";
                                        
                                        dal.Mercadoria_Save(Obj_Mercadoria, "remover");                                                                          

                                        Obj_DU.Id_DU = id_du_new;
                                        salvar_du = true;
                                    }
                                    else
                                    {
                                        salvar_du = false;
                                        MessageBox.Show("O número do DU já existe ou é nulo!", "ALERTA", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                                    }
                                }
                                else
                                {
                                    Obj_Mercadoria.Id_entreposto = jProcesso.Ent.Id_entreposto; ;
                                    Obj_Mercadoria.Id_processo = jDUs.tbProcesso.Text;
                                    Obj_Mercadoria.Id_DU = id_du_new;
                                    //Obj_Mercadoria.Data_criacao = DateTime.Parse(jDUs.dgvAddMovimentos.Rows[0].Cells["data_criacao"].Value.ToString());
                                    Obj_Mercadoria.Data_alteracao = DateTime.Now;
                                    Obj_Mercadoria.Id_Referencia = "";
                                    Obj_Mercadoria.Id_user = int.Parse(GlobalVar.GlobalValue.ToString());
                                    Obj_DU.Guid = Guid.Parse(jDUs.dgvDUs.Rows[0].Cells["guid"].Value.ToString());
                                    dal.DU_Save(Obj_DU, "remover");
                                    dal.Mercadoria_Save(Obj_Mercadoria, "remover");
                                    salvar_du = true;
                                }
                                    
         
                            }
                        }






                        if (salvar_du)
                        {
                            ///inicio salvar
                            ///
                            ArrayList Merc = new ArrayList();

                            jDUs.dgvAddMovimentos.Columns[0].Visible = true;
                            jDUs.dgvAddMovimentos.CurrentCell = jDUs.dgvAddMovimentos.Rows[jDUs.dgvAddMovimentos.Rows.Count - 1].Cells[0];


                            int n = jDUs.dgvAddMovimentos.Rows.Count;

                            try
                            {
                                if (string.IsNullOrWhiteSpace(jDUs.dgvAddMovimentos.Rows[n - 1].Cells[0].Value.ToString()))
                                {
                                    n = jDUs.dgvAddMovimentos.Rows.Count - 1;
                                }
                            }
                            catch (Exception ex)
                            {
                                n = jDUs.dgvAddMovimentos.Rows.Count - 1;
                            }
                            

                            ////int n = 0;
                            //if (!dal.DU_Get_Tipo(Obj_Mercadoria.Id_entreposto, Obj_Mercadoria.Id_processo) && accao == "editar")
                            //    n = jDUs.dgvAddMovimentos.Rows.Count - 1;

                            


                            accao = "novo";
                            if (n > 0 && !string.IsNullOrEmpty(jDUs.dgvAddMovimentos.Rows[0].Cells[0].Value.ToString()) 
                                    && !string.IsNullOrEmpty(jDUs.dgvAddMovimentos.Rows[0].Cells[1].Value.ToString())
                                    && !string.IsNullOrEmpty(jDUs.dgvAddMovimentos.Rows[0].Cells[2].Value.ToString())
                                    && !string.IsNullOrEmpty(jDUs.dgvAddMovimentos.Rows[0].Cells[3].Value.ToString())
                                    && !string.IsNullOrEmpty(jDUs.dgvAddMovimentos.Rows[0].Cells[4].Value.ToString()))
                            {
                                salvar_mercadoria = true;
                           
                             
                                for (int i = 0; i < n; i++)
                                {
                                    Obj_Mercadoria.Id_user = int.Parse(GlobalVar.GlobalValue.ToString());
                                    Obj_Mercadoria.Data_criacao = DateTime.Now;
                                    Obj_Mercadoria.Data_alteracao = DateTime.Now;
                                    Obj_Mercadoria.Id_entreposto = jProcesso.Ent.Id_entreposto;
                                    Obj_Mercadoria.Id_processo = jDUs.tbProcesso.Text;
                                    Obj_Mercadoria.Id_DU = jDUs.tbIdDU.Text;


                                    if (!string.IsNullOrEmpty(jDUs.dgvAddMovimentos.Rows[i].Cells[0].Value.ToString()) 
                                    && !string.IsNullOrEmpty(jDUs.dgvAddMovimentos.Rows[i].Cells[1].Value.ToString())
                                    && !string.IsNullOrEmpty(jDUs.dgvAddMovimentos.Rows[i].Cells[2].Value.ToString())
                                    && !string.IsNullOrEmpty(jDUs.dgvAddMovimentos.Rows[i].Cells[3].Value.ToString())
                                    && !string.IsNullOrEmpty(jDUs.dgvAddMovimentos.Rows[i].Cells[4].Value.ToString()))
                                    {
                                        if (dal.DU_Get_Tipo(Obj_Mercadoria.Id_entreposto, Obj_Mercadoria.Id_processo) && !dal.DU_Get_Id(Obj_Mercadoria.Id_entreposto, Obj_Mercadoria.Id_processo, Obj_Mercadoria.Id_DU))
                                        {
                                        

                                            Obj_Mercadoria.Id_Referencia = jDUs.dgvAddMovimentos.Rows[i].Cells[0].Value.ToString();
                                            
                                            Mercadoria Obj_Mercadoria_Entrada = dal.DU_Get_DU_Entrada(Obj_DU.Id_entreposto, Obj_DU.Id_processo, Obj_Mercadoria.Id_Referencia);

                                            Obj_Mercadoria.Quantidade = int.Parse(jDUs.dgvAddMovimentos.Rows[i].Cells[2].Value.ToString());
                                            
                                            int saldo = int.Parse(jDUs.dgvAddMovimentos.Rows[i].Cells[1].Value.ToString());
                                            if (saldo > 0)
                                            {
                                                Obj_Mercadoria.Valor = (Obj_Mercadoria.Quantidade * Obj_Mercadoria_Entrada.Valor) / Obj_Mercadoria_Entrada.Quantidade;
                                                Obj_Mercadoria.Peso_Bruto = (Obj_Mercadoria.Quantidade * Obj_Mercadoria_Entrada.Peso_Bruto) / Obj_Mercadoria_Entrada.Quantidade;
                                                Obj_Mercadoria.Peso_Liquido = (Obj_Mercadoria.Quantidade * Obj_Mercadoria_Entrada.Peso_Liquido) / Obj_Mercadoria_Entrada.Quantidade;

                                            }
                                            else
                                            {
                                                Obj_Mercadoria.Valor = 0;
                                                Obj_Mercadoria.Peso_Bruto = 0;
                                                Obj_Mercadoria.Peso_Liquido = 0;
                                            }
                                            if (Obj_Mercadoria.Quantidade > saldo)
                                            {
                                                MessageBox.Show(this, "A Quantidade inserida é superior ao Saldo existente: " + saldo + " unidades.", "ERRO", MessageBoxButtons.OK, MessageBoxIcon.Stop);
                                                salvar_mercadoria = false;                                           
                                            }  
                                            else
                                            {
                                                Obj_Mercadoria.Saldo = saldo - Obj_Mercadoria.Quantidade;
                                            }
                                        }
                                        else
                                        {
                                            Obj_Mercadoria.Id_Referencia = jDUs.dgvAddMovimentos.Rows[i].Cells[0].Value.ToString();
                                            Obj_Mercadoria.Quantidade = int.Parse(jDUs.dgvAddMovimentos.Rows[i].Cells[1].Value.ToString());
                                            Obj_Mercadoria.Valor = Decimal.Parse(jDUs.dgvAddMovimentos.Rows[i].Cells[2].Value.ToString());
                                            Obj_Mercadoria.Peso_Bruto = Decimal.Parse(jDUs.dgvAddMovimentos.Rows[i].Cells[3].Value.ToString());
                                            Obj_Mercadoria.Peso_Liquido = Decimal.Parse(jDUs.dgvAddMovimentos.Rows[i].Cells[4].Value.ToString());
                                            Obj_Mercadoria.Saldo = Obj_Mercadoria.Quantidade;
                                            salvar_mercadoria = true;
                                        }
                                        if (salvar_mercadoria)
                                        {

                                            Merc.Add(Obj_Mercadoria);
                                            Obj_Mercadoria = new Mercadoria();
                                        }
                                    }
                                }
                            }

                            // grava DU
                            if (salvar_mercadoria && n > 0)
                            {

                                int n_m = Merc.Count;
                                for (int i = 0; i < n_m; i++)
                                {
                                    dal.Mercadoria_Save((Mercadoria)Merc[i], accao);

                                }

                                Obj_DU.Data_criacao = DateTime.Now;
                                dal.DU_Save(Obj_DU, accao);
                                jDUs.Load_DUs(Obj_Processo);
                                //jDUs.Load_DUs();
                                jDUs.gbDU.Visible = false;
                                jDUs.dgvAddMovimentos.Visible = false;
                                jDUs.dgvMovimentos.AlternatingRowsDefaultCellStyle.BackColor = Color.LightCyan;
                                jDUs.dgvMovimentos.ColumnHeadersDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
                                jDUs.dgvMovimentos.ColumnHeadersDefaultCellStyle.Font = new Font(DataGridView.DefaultFont, FontStyle.Bold);
                                //jDUs.dgvMovimentos.Columns[0].HeaderCell.Style.Font = new Font("Arial", 14F, FontStyle.Bold, GraphicsUnit.Pixel);

                                DialogResult dialogResult = MessageBox.Show("Quer imprimir o DU selecionado?", "IMPRIMIR", MessageBoxButtons.YesNo);
                                if (dialogResult == DialogResult.Yes)
                                {
                                    if (jReports == null)
                                    {
                                        jReports = new frmReports(GlobalVar.GlobalEntreposto.ToString());
                                        jReports.MdiParent = this;
                                        jReports.Dock = DockStyle.Fill;
                                        jReports.Show();
                                    }
                                    else
                                    {
                                        tsReport1.Enabled = true;
                                        tsReport2.Enabled = true;
                                        tsReport3.Enabled = true;
                                        tsReport4.Enabled = true;
                                        jReports.Activate();
                                        jReports.Load_DGV(GlobalVar.GlobalEntreposto, "");

                                    }



                                    Report2(jDUs.tbProcesso.Text);
                                }

                            }
                            else
                            {
                                MessageBox.Show("Não se esqueça de completar a informação do movimento");
                            }
                        }

                        if (!salvar_du || !salvar_mercadoria)
                        {
                            salvar = false;
                        }

                    }

                }
                
            }


            if (salvar)
            {
                tsDUver.Enabled = true;
                tsbNovo.Enabled = true;
                tsbAlterar.Enabled = true;
                tsbSalvar.Enabled = false;
                tsbCancelar.Enabled = false;
                tsbApagar.Enabled = true;
                accao = "";


                //DialogResult dialogResult = MessageBox.Show("Quer imprimir o DU selecionado?", "IMPRIMIR", MessageBoxButtons.YesNo);
                //if (dialogResult == DialogResult.Yes)
                //{
                //    Report2(jDUs.tbProcesso.Text);
                //}

            }

            

        }

        private void tsbCancelar_Click(object sender, EventArgs e)
        {
            accao = "";

            if (ActiveMdiChild.Name == "frmEntreposto")
            {
                jEntreposto.dgvEntrepostos.Visible = true;
                jEntreposto.groupBox1.Visible = false;
                jEntreposto.pnlEntrepostos.Enabled = true;
            }
            else
            {
                if (ActiveMdiChild.Name == "frmDUs")
                {
                    if (jDUs.tbProcesso.CanSelect || jDUs.dgvMovimentos.RowCount == 0)
                    {
                        this.ActiveMdiChild.Close();
                        jDUs.lDUs.Visible = false;
                    }
                    else
                    {

                        jDUs.lDUs.Visible = true;
                        jDUs.gbDU.Visible = false;
                        jDUs.dgvDUs.Visible = true;
                        jDUs.dgvMovimentos.Visible = true;
                        jDUs.dgvAddMovimentos.Visible = false;
                    }

                }
                else
                {
                    if (ActiveMdiChild.Name == "frmProcesso")
                    {
                        jProcesso.lPesqRef.Visible = true;
                        jProcesso.tbPesqRef.Visible = true;
                        jProcesso.groupBox1.Visible = false;
                        jProcesso.dgvStocks.Visible = true;

                        jProcesso.lStocks.Visible = true;
                    }
                    else
                    {
                        if (ActiveMdiChild.Name == "frmReport")
                        {
                            this.ActiveMdiChild.Close();
                        }
                        else
                        {
                            if (ActiveMdiChild.Name == "frmSaldoReferencia")
                            {
                                this.ActiveMdiChild.Close();
                            }
                            else
                            {
                                if (ActiveMdiChild.Name == "frmStocks")
                                {
                                    this.ActiveMdiChild.Close();
                                }
                                else
                                {
                                    if (ActiveMdiChild.Name == "frmProcessoMovimentos")
                                    {
                                        this.ActiveMdiChild.Close();
                                    }
                                }
                            }
                        }
                    }

                }
            }

            tsDUver.Enabled = true;
            tsbNovo.Enabled = true;
            tsbAlterar.Enabled = true;
            tsbSalvar.Enabled = false;
            tsbCancelar.Enabled = false;
            tsbApagar.Enabled = true;
            //tsbImprimir.Enabled = true;
        }

        //private void tsDUver_Click(object sender, EventArgs e)
        //{

        //    Processo proc = new Processo();

        //    string entreposto = "";
        //    string processo= "";

        //    DataGridViewCell cell = null;
        //    foreach (DataGridViewCell selectedCell in jProcesso.dgvProcessos.SelectedCells)
        //    {
        //        cell = selectedCell;
        //        break;
        //    }
        //    if (cell != null)
        //    {
        //        DataGridViewRow row = cell.OwningRow;
        //        entreposto = row.Cells["id_entreposto"].Value.ToString();
        //        processo = row.Cells["id_processo"].Value.ToString();

        //    }

        //    proc = dal.Processo_Get(entreposto, processo);

        //    Boolean du_entrada = dal.DU_Get_Tipo(entreposto, processo);
        //    if (du_entrada)
        //        startup_dus(proc, "ver");
        //    else
        //    {
        //        startup_dus(proc, "novo");
        //        accao = "novo";
        //        tsbNovo.Enabled = false;
        //        tsbAlterar.Enabled = false;
        //        tsbSalvar.Enabled = true;
        //        tsbCancelar.Enabled = true;
        //        tsbApagar.Enabled = false;
        //        //tsbImprimir.Enabled = false;
        //    }
        //}

        private void tsbApagar_Click(object sender, EventArgs e)
        {
            if (ActiveMdiChild.Name == "frmEntreposto")
            {
                if (jEntreposto.dgvEntrepostos.RowCount > 0)
                {
                    Entreposto Ent = new Entreposto();



                    DataGridViewCell cell = null;
                    foreach (DataGridViewCell selectedCell in jEntreposto.dgvEntrepostos.SelectedCells)
                    {
                        cell = selectedCell;
                        break;
                    }
                    if (cell != null)
                    {
                        DataGridViewRow row = cell.OwningRow;

                        Ent.Id_user = GlobalVar.GlobalValue;
                        Ent.Data_criacao = DateTime.Parse(row.Cells["data_criacao"].Value.ToString());
                        Ent.Data_alteracao = DateTime.Now;
                        Ent.Id_entreposto = row.Cells["id_entreposto"].Value.ToString();
                        Ent.Tipo = "";
                        Ent.Nome_firma = "";
                        Ent.Activo = true;
                        Ent.Guid = Guid.Parse( row.Cells["guid"].Value.ToString());

                    }

                    if (!dal.Processos_Existe(Ent.Id_entreposto))
                    {
                        DialogResult dialogResult = MessageBox.Show("Tem a certeza que pretende apagar o registo selecionado?", "APAGAR", MessageBoxButtons.YesNo);
                        if (dialogResult == DialogResult.Yes)
                        {
                            dal.Entreposto_Save(Ent, "remover");
                            jEntreposto.frmEntreposto_ReLoad();
                        }
                    }
                    else
                        MessageBox.Show("O entreposto selecionado tem processos!", "ALERTA", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                }
            }
            else
            {
                if (ActiveMdiChild.Name == "frmProcesso")
                {
                    if (jProcesso.dgvProcessos.RowCount > 0)
                    {
                        Processo Proc = new Processo();

                        DataGridViewCell cell = null;
                        foreach (DataGridViewCell selectedCell in jProcesso.dgvProcessos.SelectedCells)
                        {
                            cell = selectedCell;
                            break;
                        }
                        if (cell != null)
                        {
                            DataGridViewRow row = cell.OwningRow;

                            Proc.Id_user = GlobalVar.GlobalValue;
                            Proc.Data_criacao = DateTime.Parse(row.Cells["data_criacao"].Value.ToString());
                            Proc.Data_alteracao = DateTime.Now;
                            Proc.Id_entreposto = GlobalVar.GlobalEntreposto;
                            Proc.Id_processo = row.Cells["id_processo"].Value.ToString();
                            Proc.Data_processo = DateTime.Parse(row.Cells["data_processo"].Value.ToString());
                            Proc.Fornecedor = row.Cells["fornecedor"].Value.ToString();
                            Proc.Id_factura = row.Cells["id_factura"].Value.ToString();
                            Proc.Contra_marca = row.Cells["contra_marca"].Value.ToString();
                            Proc.Data_Contra_marca = DateTime.Parse(row.Cells["data_contra_marca"].Value.ToString());
                            Proc.Guid = Guid.Parse(row.Cells["guid"].Value.ToString());

                            if (!dal.DUs_Existe(Proc.Id_entreposto, Proc.Id_processo))
                            {
                                DialogResult dialogResult = MessageBox.Show("Tem a certeza que pretende apagar o registo selecionado?", "APAGAR", MessageBoxButtons.YesNo);
                                if (dialogResult == DialogResult.Yes)
                                {
                                    dal.Processo_Save(Proc, "remover");
                                    jProcesso.Load_Processos();
                                }
                            }
                            else
                                MessageBox.Show("O processo selecionado tem DUs!", "ALERTA", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                        }
                    }
                }
                else
                {
                    if (ActiveMdiChild.Name == "frmDUs")
                    {


                        DataGridViewCell cell = null;
                        foreach (DataGridViewCell selectedCell in jDUs.dgvDUs.SelectedCells)
                        {
                            cell = selectedCell;
                            break;
                        }
                        if (cell != null)
                        {
                            DataGridViewRow row = cell.OwningRow;

                            DU Du = new DU();
                            Du.Id_user = GlobalVar.GlobalValue;
                            Du.Data_criacao = DateTime.Parse(row.Cells["data_criacao"].Value.ToString());
                            Du.Id_entreposto = GlobalVar.GlobalEntreposto;
                            Du.Id_processo = row.Cells["id_processo"].Value.ToString();
                            Du.Id_DU = row.Cells["id_du"].Value.ToString();
                            Du.DU_Entrada = Boolean.Parse(row.Cells["du_entrada"].Value.ToString());
                            Du.Alfandega = row.Cells["alfandega"].Value.ToString();
                            Du.Data_DU = DateTime.Parse(row.Cells["data_du"].Value.ToString());
                            Du.Regime = row.Cells["regime"].Value.ToString();
                            Du.Guid = Guid.Parse(row.Cells["guid"].Value.ToString());


                            DialogResult dialogResult = MessageBox.Show("Tem a certeza que pretende apagar o registo selecionado?", "APAGAR", MessageBoxButtons.YesNo);
                            if (dialogResult == DialogResult.Yes)
                            {
                                if (dal.DU_Is_Last_Id(Du.Id_entreposto, Du.Id_processo, Du.Id_DU))
                                {
                                    dal.DU_Save(Du, "remover");
                                    Mercadoria Merc = new Mercadoria();

                                    Merc.Id_user = GlobalVar.GlobalValue;
                                    Merc.Data_criacao = Du.Data_criacao;
                                    Merc.Id_entreposto = GlobalVar.GlobalEntreposto;
                                    Merc.Id_processo = Du.Id_processo;
                                    Merc.Id_DU = Du.Id_DU;
                                    Merc.Id_Referencia = "";
                                    Merc.Peso_Bruto = 0;
                                    Merc.Peso_Liquido = 0;
                                    Merc.Quantidade = 0;
                                    Merc.Saldo = 0;
                                    Merc.Valor = 0;

                                    dal.Mercadoria_Save(Merc, "remover");
                                    jDUs.Load_DUs();
                                }
                                else
                                {
                                    MessageBox.Show("Não pode remover o DU selecionado!", "ALERTA", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                                }
                            }
                            //MessageBox.Show(jDUs.dgvDUs.CurrentRow.Cells["id_du"].Value.ToString());
                   
                    }
                    
                    }
                }
            }
        }

        private void tsReport1_Click(object sender, EventArgs e)
        {
            //MAPA DE MOVIMENTOS DO ENTREPOSTO ADUANEIRO
            frmrptProcessoMovimentos R = new frmrptProcessoMovimentos(GlobalVar.GlobalEntreposto.ToString(), jReports.dataGridView1.CurrentRow.Cells[0].Value.ToString());
            R.MdiParent = this;
            R.Dock = DockStyle.Fill;
            R.Show();
        }

        private void tsReport2_Click(object sender, EventArgs e)
        {
            Report2(jReports.dataGridView1.CurrentRow.Cells[0].Value.ToString());
        }

        public void Report2(string id_processo)
        {
            //MAPA DE MOVIMENTOS DO ENTREPOSTO ADUANEIRO
            string id_e = GlobalVar.GlobalEntreposto.ToString();
            string id_p = id_processo;

            string id_du_e = "";
            string id_du_s = "";

            ArrayList DU_Get_Lista = dal.DU_Get_Lista(id_e, id_p);

            int n = DU_Get_Lista.Count;

            DU du_e = (DU)DU_Get_Lista[0];
            id_du_e = du_e.Id_DU;


            if (n > 1)
            {
                DU du_s = (DU)DU_Get_Lista[n - 1];
                id_du_s = du_s.Id_DU;
            }

            frmrptMovimentoProcesso R = new frmrptMovimentoProcesso(id_e, id_p, id_du_e, id_du_s);
            R.MdiParent = this;
            R.Dock = DockStyle.Fill;
            R.Show();
        }

        public void Report2(string id_processo,string id_du)
        {
            //MAPA DE MOVIMENTOS DO ENTREPOSTO ADUANEIRO
            string id_e = GlobalVar.GlobalEntreposto.ToString();
            string id_p = id_processo;

            string id_du_e = "";
            string id_du_s = "";

            ArrayList DU_Get_Lista = dal.DU_Get_Lista(id_e, id_p);

            int n = DU_Get_Lista.Count;

            DU du_e = (DU)DU_Get_Lista[0];
            id_du_e = du_e.Id_DU;


            if (id_du_e != id_du)
            {
                
                id_du_s = id_du;
            }

            frmrptMovimentoProcesso R = new frmrptMovimentoProcesso(id_e, id_p, id_du_e, id_du_s);
            R.MdiParent = this;
            R.Dock = DockStyle.Fill;
            R.Show();
        }


        private void tsReport3_Click(object sender, EventArgs e)
        {
            //MAPA DE SALDOS DO ENTREPOSTO ADUANEIRO
            Mercadoria Merc = new Mercadoria();
            Merc.Id_entreposto = GlobalVar.GlobalEntreposto.ToString();
            Merc.Id_Referencia = jReports.dataGridView1.CurrentRow.Cells[2].Value.ToString();          
            frmrptSaldoReferencia R = new frmrptSaldoReferencia(Merc);
            R.MdiParent = this;
            R.Dock = DockStyle.Fill;
            R.Show();
        }

        private void tsReport4_Click(object sender, EventArgs e)
        {

            frmrptStocks Stocks = new frmrptStocks(GlobalVar.GlobalEntreposto.ToString(),jReports.dateTimePicker1.Value);
            Stocks.MdiParent = this;
            Stocks.Dock = DockStyle.Fill;
            Stocks.Show();
        }


       

    }
}
